Skip to content

fix(server): keep stdio SSE proxy alive after disconnect - #1701

Closed
AkhilTrivediX wants to merge 1 commit into
modelcontextprotocol:v1/mainfrom
AkhilTrivediX:codex/guard-closed-sse-stdio-notifications
Closed

fix(server): keep stdio SSE proxy alive after disconnect#1701
AkhilTrivediX wants to merge 1 commit into
modelcontextprotocol:v1/mainfrom
AkhilTrivediX:codex/guard-closed-sse-stdio-notifications

Conversation

@AkhilTrivediX

Copy link
Copy Markdown

Summary

  • handle rejected SSE notification sends from the stdio stderr bridge
  • add a server regression test that reproduces an SSE client disconnect while the upstream stdio process continues writing to stderr
  • run the server regression suite as part of the standard test command

Root cause

When an Inspector SSE client disconnected, a later stderr notification from the proxied stdio server could call SSEServerTransport.send() after the transport had closed. Its rejected promise was unhandled, so Node exited with Error: Not connected.

The proxy now records the failed notification delivery while keeping the transport lifecycle running. The disconnected client still receives no message, but the Inspector process remains available for subsequent connections.

Closes #1014.

Testing

  • npm run test-server
  • cd client && npm test -- --runInBand
  • npm run build
  • npx prettier --check package.json server/package.json server/src/index.ts server/test/stdio-sse-close.test.ts

@cliffhall
cliffhall changed the base branch from main to v1/main July 28, 2026 03:03
@cliffhall

cliffhall commented Jul 31, 2026

Copy link
Copy Markdown
Member

Closing: v1 is deprecated.

Thank you for this contribution, and apologies for the long wait for a response.

v1 will receive security fixes only. We reviewed every open v1 PR for security impact before closing — see the backlog triage in #1819 — and a small number were retained for a final 1.0.5 patch release. This one is a functionality, compatibility, or cleanup change rather than a vulnerability fix, so it is being closed unmerged. This is not a judgment on the quality of the work — it's a consequence of the branch it targets being frozen.

If the underlying problem still exists in v2, we'd genuinely like to know. Please open an issue describing it against v2. Note that we accept external contributions as issues rather than pull requests — maintainers handle design and implementation through a prompt-driven workflow. See CONTRIBUTORS.md.

Thanks again for taking the time to contribute to the Inspector.

@cliffhall cliffhall closed this Jul 31, 2026
@cliffhall cliffhall added the closed-v1-deprecated Closed unmerged: v1 is deprecated and accepting security fixes only label Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

closed-v1-deprecated Closed unmerged: v1 is deprecated and accepting security fixes only

Projects

None yet

Development

Successfully merging this pull request may close these issues.

SSE transport crashes with "Not connected" error when multiple connections occur

2 participants